package servicios;
import java.util.List;

import aterrizar.Usuario;
import daos.VueloDAO;
import servicios.Operation;
import model.Asiento;


public class ReservarGrupoAsientos implements Operation<List<Asiento>> {

	private Long vueloID;
	private Long tramoID;
	private List<Long> codAsientos;
	private List<Asiento> asientos;
	private List<Usuario> usuarios;
	
	public ReservarGrupoAsientos(Long vueloID, Long tramoID, List<Long> codAsientos, List<Usuario> usuarios){
		this.vueloID = vueloID;
		this.tramoID = tramoID;
		this.codAsientos = codAsientos;
		this.asientos = new VueloDAO().getAsientosDeTramo(tramoID);
		this.usuarios = usuarios;
	}
	
	public List<Asiento> execute() {
		ReservarAsiento reservar;
		int indice = 0;
		if(todosDisponibles()){
			for (Long id : codAsientos) {
			reservar= new ReservarAsiento(id,this.vueloID , this.tramoID, this.usuarios.get(indice));
			reservar.execute();
			indice++;
			}
		}
		return asientos;	
	}
	
	private boolean todosDisponibles(){
		boolean todosDisponibles = true;
		for(Asiento a : asientos ){
			todosDisponibles &= a.estaReservado();
		}
		return todosDisponibles;
	}
		
}
